// pages/goods_list/index.js

//引入自己封装后的request()
import { request } from '../../request/index.js'
//配置 支持async语法
import regeneratorRuntime from '../../lib/runtime/runtime'

Page({
  data: {
    tabs: [
      {
        id:0,
        value:'综合',
        isActive:true
      },
      {
        id:1,
        value:'销量',
        isActive:false
      },
      {
        id:2,
        value:'价格',
        isActive:false
      }
    ],
    goodsList:[]  //商品列表数据
  },
  //请求接口要的参数
  QueryParams:{
    query:"",
    cid:"",
    pagenum:1,
    pagesize:10
  },
  //总页数
  totalPages: 1,
  onLoad: function (options) {
    //console.log(options)

    this.QueryParams.cid = options.cid || ""
    this.QueryParams.query = options.query || ""

    this.getGoodsList()
  },
  //页面上滑 滚动条触底事件
  onReachBottom(){
    //console.log('页面触底了~~~')

    //1 判断还有没有下一页数据
    if(this.QueryParams.pagenum >= this.totalPages){
      //没有下一页
      //console.log('没有下一页')
	  
      wx.showToast({title: '没有下一页数据了！'})
        
    }else{
      //还有下一页
      //console.log('还有下一页')

      this.QueryParams.pagenum ++
      this.getGoodsList()
    }
  },
  //页面下拉刷新事件
  onPullDownRefresh(){
    console.log('下拉刷新触发了~~~')

    //1 重置 商品列表数据 数组
    this.setData({goodsList:[]})

    //2 重置 页码
    this.QueryParams.pagenum = 1

    //3 重新发送请求
    this.getGoodsList()
  },
  //发起请求，获取商品列表数据
  async getGoodsList(){
    const res = await request({url:"/goods/search", data:this.QueryParams})
    //console.log(res)

    //取出而且保存总条数
    const total = res.data.message.total
    //计算总页数 = 总条数/页容量
    this.totalPages = Math.ceil(total/this.QueryParams.pagesize)
    //console.log(this.totalPages)

    this.setData({
      //将下一页数据拼接到旧数据的数组中
      goodsList: [...this.data.goodsList, ...res.data.message.goods]
    })
	
	  //手动关闭下拉刷新窗口
    wx.stopPullDownRefresh()
  },
  //标题点击事件 从子组件传递过来
  handleTabsItemChange(e){
	//console.log(e)
    
    //1.获取被点击的标题索引
    const {index} = e.detail
    //2.修改源数组
    let {tabs} = this.data
    tabs.forEach((v,i)=>i===index?v.isActive=true:v.isActive=false)
    //3.赋值到data中
    this.setData({tabs})
  }
})
